package com.example.sams.controller;

import com.example.sams.domain.request.ChangePasswordRequest;
import com.example.sams.domain.request.LoginRequest;
import com.example.sams.service.IUsersService;
import com.example.sams.utils.JwtUtil;
import com.example.sams.utils.LoginUser;
import com.example.sams.utils.ResultUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

/**
 * <p>
 * 登录鉴权控制器
 * </p>
 *
 * @author jinghong
 * @since 2025-11-04
 */
@RestController
@RequestMapping("/auth")
public class AuthController {
    // 注入UserService：调用Service层的登录业务方法
    @Autowired
    private IUsersService userService;



    /**
     * 登录接口
     * @PostMapping("/login")：定义HTTP POST请求，接口路径是“/login”（前端要调这个路径）
     * @RequestBody：将前端传的JSON格式数据，自动转成LoginRequest对象
     */
    @PostMapping("/login")
    public ResultUtil login(@RequestBody LoginRequest loginRequest) {
        // 直接调用Service层的login方法，把结果返回给前端（业务逻辑全在Service层）
        return userService.login(loginRequest);
    }

    /**
     * 17. 修改密码（支持所有角色）
     * PATCH /auth/me/password
     */
    @PatchMapping("/me/password")
    public ResultUtil changePassword(@RequestBody ChangePasswordRequest request) {
        String userId = LoginUser.getCurrentId();
        if (userId == null) {
            return ResultUtil.error("未获取到用户信息，请重新登录");
        }
        return userService.changePassword(userId, request.getOldPassword(), request.getNewPassword());
    }

}
